<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Promise.try()</title>
</head>
<body>
    <h1>Promise.try()</h1>
    <h2>统一同步函数和异步函数的处理方式</h2>

    <script>
        // 传统方式处理可能是同步也可能是异步的函数
        function getData() {
            if (Math.random() > 0.5) {
                return Promise.resolve('异步数据');
            } else {
                return '同步数据';
            }
        }

        // 模拟Promise.try的实现
        function promiseTry(fn) {
            return new Promise(resolve => resolve(fn()));
        }

        // 使用示例
        promiseTry(() => getData())
            .then(result => {
                console.log('处理结果:', result);
            })
            .catch(e => {
                console.log('处理错误:', e);
            });

        // 另一个例子：数据库操作
        class Database {
            query(sql) {
                if (sql.includes('SELECT')) {
                    return Promise.resolve([{ id: 1, name: '张三' }]);
                }
                throw new Error('SQL语法错误');
            }
        }

        const db = new Database();
        
        promiseTry(() => db.query('SELECT * FROM users'))
            .then(users => {
                console.log('查询结果:', users);
            })
            .catch(e => {
                console.log('查询错误:', e);
            });
    </script>
</body>
</html> 